package com.wjm.api.ObjectIO;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * Data:2022年07月22日
 * Author:wjm
 * Content: ObjectOutputStream（序列化）
 *
 *
 *  ObjectOutputStream是一个高级流
 *
 *  序列化：将指定的对象磁化到硬盘。此过程叫序列化
 *
 *  序列化方法：
 *      void writeObject(Object obj) 将对象转换为字节
 *
 *  序列化的作用：
 *      对象是存储在内存中的，有时候我们需要将对象保存到硬盘上，有又有时需要将对象传到另一台计算机上这是就需要对象序列化
 *
 *  注意：
 *      1）如果Emp这个类没有实现serializable这个接口那么就不能进行序列化，系统会报错 java.io.NotSerializableException
 *      2）如果Emp这个类中有的属性不想要被序列化，则可以使用 transient 关键字修饰
 *
 *
 */
public class ObjectOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        //创建需要序列化的对象
        Emp emp1 = new Emp(01,"欧文",50000);
        Emp emp2 = new Emp(02,"wjm",80000);
        Emp emp3 = new Emp(03,"詹姆斯",60000);

        //创建序列化对象
        ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("EMP.txt"));
        //将对象序列号
        outputStream.writeObject(emp1);
        outputStream.writeObject(emp2);
        outputStream.writeObject(emp3);

        //关闭流连接，释放资源
        outputStream.close();
        System.out.println("序列化完毕");
    }
}
